// common.h
#ifndef COMMON_H
#define COMMON_H
#define SHM_NAME "shm_test"
#define SHM_SIZE 2048
#define MAX_NODES 100 // 假设最多100个节点

union val_t
{
    int b_val;   // bool类型存储空间
    int i_val;   // 整形值存储空间
    float f_val; // 浮点值存储空间
};

struct std_node
{
    int key;             // 唯一键值
    int type;            // 数据点类型
    int dev_type;        // 数据点属于哪个设备，根据网关支持的设备自行定义
    union val_t old_val; // 变化上报后需要更新旧值
    union val_t new_val; // 从共享内存取出最新数据，放到new_val中
    int ret;             // 默认为-1，采集成功后设置为0，采集失败再置-1
};

// 定义消息类型
#define MSG_TYPE_CONTROL 1 //设备1---MODBUS
#define MSG_TYPE_CONTROL_2 2 //设备2---STM32
// 控制消息结构体
struct control_msg
{
    long mtype; // 控制的设备modbus=1,stm32=2
    int key;    // 要控制的设备key
    union val_t value;  // 要设置的值
    int type;   //消息类型
};

static int handle_login(int sock, const char *input);
static int handle_shm_read(int sock, const char *input);
static int handle_msg_write(int sock, const char *input);



#endif